<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图书馆管理系统需求分析</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            background: linear-gradient(135deg, #1a2a6c, #b21f1f, #fdbb2d);
            color: #333;
            line-height: 1.6;
            padding: 20px;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background-color: rgba(255, 255, 255, 0.97);
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
            overflow: hidden;
        }
        
        header {
            background: linear-gradient(to right, #2c3e50, #4a6491);
            color: white;
            text-align: center;
            padding: 30px 20px;
            position: relative;
        }
        
        h1 {
            font-size: 2.8rem;
            margin-bottom: 15px;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
        }
        
        .subtitle {
            font-size: 1.2rem;
            max-width: 800px;
            margin: 0 auto;
            color: #e0e0e0;
        }
        
        .content-section {
            padding: 30px;
        }
        
        h2 {
            color: #2c3e50;
            border-bottom: 3px solid #3498db;
            padding-bottom: 10px;
            margin: 25px 0 15px;
            font-size: 1.8rem;
            display: flex;
            align-items: center;
        }
        
        h2 i {
            margin-right: 10px;
            background: linear-gradient(to right, #3498db, #2ecc71);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
        
        h3 {
            color: #2980b9;
            margin: 20px 0 10px;
            font-size: 1.4rem;
            padding-left: 10px;
            border-left: 4px solid #3498db;
        }
        
        .card {
            background: white;
            border-radius: 10px;
            padding: 25px;
            margin: 20px 0;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        
        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
        }
        
        .requirements-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            margin: 20px 0;
        }
        
        .requirement-item {
            background: linear-gradient(to bottom right, #f8f9fa, #e9ecef);
            padding: 20px;
            border-radius: 8px;
            border-left: 4px solid #3498db;
            position: relative;
            overflow: hidden;
        }
        
        .requirement-item::before {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 4px;
            background: linear-gradient(to right, #3498db, #2ecc71);
        }
        
        .requirement-item h4 {
            color: #2c3e50;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
            font-size: 1.3rem;
        }
        
        .requirement-item h4 i {
            margin-right: 10px;
            background: linear-gradient(to right, #3498db, #2ecc71);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
        
        ul {
            padding-left: 25px;
            margin: 15px 0;
        }
        
        li {
            margin-bottom: 12px;
            position: relative;
            padding-left: 25px;
            line-height: 1.7;
        }
        
        li::before {
            content: "•";
            position: absolute;
            left: 0;
            color: #3498db;
            font-weight: bold;
            font-size: 1.5rem;
        }
        
        .features {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }
        
        .feature {
            background: linear-gradient(135deg, #3498db, #2c3e50);
            color: white;
            padding: 25px 20px;
            border-radius: 10px;
            text-align: center;
            transition: all 0.3s ease;
            position: relative;
            overflow: hidden;
            z-index: 1;
        }
        
        .feature::before {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(135deg, rgba(255,255,255,0.1), transparent);
            z-index: -1;
        }
        
        .feature:hover {
            transform: scale(1.05);
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
        }
        
        .feature h4 {
            font-size: 1.3rem;
            margin-bottom: 15px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        .feature h4 i {
            margin-right: 10px;
            font-size: 1.8rem;
        }
        
        footer {
            text-align: center;
            padding: 25px;
            background: #2c3e50;
            color: white;
            margin-top: 20px;
        }
        
        .highlight {
            background: linear-gradient(to right, #3498db, #2ecc71);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            font-weight: bold;
        }
        
        .design-points {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }
        
        .design-card {
            background: #f0f8ff;
            border-radius: 10px;
            padding: 20px;
            border: 1px solid #3498db;
            box-shadow: 0 4px 8px rgba(52, 152, 219, 0.2);
        }
        
        .design-card h4 {
            color: #2c3e50;
            margin-bottom: 15px;
            font-size: 1.2rem;
            display: flex;
            align-items: center;
        }
        
        .design-card h4 i {
            margin-right: 10px;
            color: #3498db;
        }
        
        .summary-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }
        
        .summary-item {
            background: linear-gradient(to bottom right, #e3f2fd, #bbdefb);
            padding: 20px;
            border-radius: 8px;
            text-align: center;
            border: 2px dashed #3498db;
        }
        
        .summary-item h4 {
            color: #2c3e50;
            margin-bottom: 10px;
        }
        
        @media (max-width: 768px) {
            h1 {
                font-size: 2.2rem;
            }
            
            .content-section {
                padding: 20px;
            }
            
            .requirements-grid {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>图书馆管理系统需求分析</h1>
            <p class="subtitle">基于C#面向对象编程实践：类与对象、继承与多态、集合框架与泛型集合</p>
        </header>
        
        <div class="content-section">
            <div class="card">
                <h2><i class="fas fa-book-open"></i> 系统概览</h2>
                <p>本系统是一个完整的图书馆管理解决方案，旨在通过实践C#面向对象编程的核心概念，包括类与对象设计、继承与多态应用、集合框架和泛型集合的使用。</p>
                
                <div class="summary-grid">
                    <div class="summary-item">
                        <h4>核心功能模块</h4>
                        <p>图书管理、会员管理、借阅管理、系统管理</p>
                    </div>
                    <div class="summary-item">
                        <h4>面向对象特性</h4>
                        <p>类与对象、继承与多态、封装原则</p>
                    </div>
                    <div class="summary-item">
                        <h4>集合框架</h4>
                        <p>List&lt;T&gt;、Dictionary&lt;K,V&gt;、LINQ查询</p>
                    </div>
                    <div class="summary-item">
                        <h4>开发语言</h4>
                        <p>C# (.NET Core/.NET 6+)</p>
                    </div>
                </div>
            </div>
            
            <div class="card">
                <h2><i class="fas fa-clipboard-list"></i> 核心需求</h2>
                
                <div class="requirements-grid">
                    <div class="requirement-item">
                        <h4><i class="fas fa-book"></i> 图书管理</h4>
                        <ul>
                            <li>支持添加书籍和杂志等不同类型的文献</li>
                            <li>根据图书ID删除文献</li>
                            <li>更新图书信息（标题、作者、出版社等）</li>
                            <li>按标题、作者、ISBN等字段搜索</li>
                            <li>支持小说、非小说、科学、历史等分类</li>
                            <li>跟踪每本书的可用副本数</li>
                        </ul>
                    </div>
                    
                    <div class="requirement-item">
                        <h4><i class="fas fa-users"></i> 会员管理</h4>
                        <ul>
                            <li>支持学生、教职工、VIP等不同类型会员</li>
                            <li>根据会员ID删除账户</li>
                            <li>更新会员信息（姓名、联系方式等）</li>
                            <li>按姓名、ID或类型查找会员</li>
                            <li>不同会员类型有不同的借阅限制</li>
                            <li>会员借阅历史记录查询</li>
                        </ul>
                    </div>
                    
                    <div class="requirement-item">
                        <h4><i class="fas fa-exchange-alt"></i> 借阅管理</h4>
                        <ul>
                            <li>会员借阅图书，系统记录借阅信息</li>
                            <li>处理图书归还，计算可能的逾期罚款</li>
                            <li>查看当前和历史借阅情况</li>
                            <li>自动计算逾期天数和罚款金额</li>
                            <li>允许会员预约已被借出的图书</li>
                            <li>生成借阅报告和统计信息</li>
                        </ul>
                    </div>
                    
                    <div class="requirement-item">
                        <h4><i class="fas fa-cog"></i> 系统管理</h4>
                        <ul>
                            <li>添加、删除或修改图书分类</li>
                            <li>配置借阅期限、罚款金额等参数</li>
                            <li>支持系统数据导出和恢复</li>
                            <li>管理员与普通员工权限区分</li>
                            <li>系统操作日志记录</li>
                            <li>数据备份与恢复功能</li>
                        </ul>
                    </div>
                </div>
            </div>
            
            <div class="card">
                <h2><i class="fas fa-laptop-code"></i> 面向对象设计要点</h2>
                
                <h3>类与对象设计</h3>
                <div class="design-points">
                    <div class="design-card">
                        <h4><i class="fas fa-shapes"></i> 核心类设计</h4>
                        <ul>
                            <li><span class="highlight">LibraryItem</span>：文献基类，定义公共属性和方法</li>
                            <li><span class="highlight">Book</span>：图书类，包含ISBN、出版社等属性</li>
                            <li><span class="highlight">Magazine</span>：杂志类，包含ISSN、期号等属性</li>
                            <li><span class="highlight">Member</span>：会员类，管理会员信息和权限</li>
                            <li><span class="highlight">BorrowRecord</span>：借阅记录类，跟踪借阅状态</li>
                            <li><span class="highlight">Library</span>：系统主类，协调所有功能</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-project-diagram"></i> 枚举类型</h4>
                        <ul>
                            <li><span class="highlight">BookCategory</span>：定义图书分类（小说、非小说等）</li>
                            <li><span class="highlight">MemberType</span>：定义会员类型（学生、教职工等）</li>
                            <li><span class="highlight">BorrowStatus</span>：定义借阅状态（在借、逾期、已还等）</li>
                        </ul>
                    </div>
                </div>
                
                <h3>继承与多态应用</h3>
                <div class="design-points">
                    <div class="design-card">
                        <h4><i class="fas fa-sitemap"></i> 继承结构</h4>
                        <ul>
                            <li>创建<span class="highlight">LibraryItem</span>抽象基类，定义公共属性（ID、标题、作者等）</li>
                            <li><span class="highlight">Book</span>和<span class="highlight">Magazine</span>类继承基类，添加特有属性</li>
                            <li>使用<span class="highlight">abstract</span>关键字定义必须由派生类实现的方法</li>
                            <li>通过<span class="highlight">virtual</span>和<span class="highlight">override</span>实现方法重写</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-sync-alt"></i> 多态实现</h4>
                        <ul>
                            <li>实现<span class="highlight">DisplayInfo()</span>方法在不同文献类型中的多态行为</li>
                            <li>使用基类引用处理不同类型的文献对象</li>
                            <li>通过<span class="highlight">is</span>和<span class="highlight">as</span>运算符进行类型检查和转换</li>
                            <li>在集合中存储不同类型对象并统一处理</li>
                        </ul>
                    </div>
                </div>
                
                <h3>集合框架应用</h3>
                <div class="design-points">
                    <div class="design-card">
                        <h4><i class="fas fa-th-list"></i> 集合类型选择</h4>
                        <ul>
                            <li>使用<span class="highlight">List&lt;LibraryItem&gt;</span>存储所有文献对象</li>
                            <li>使用<span class="highlight">Dictionary&lt;int, Member&gt;</span>以ID为键存储会员</li>
                            <li>使用<span class="highlight">List&lt;BorrowRecord&gt;</span>管理借阅记录</li>
                            <li>使用<span class="highlight">HashSet&lt;int&gt;</span>存储预约图书ID</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-search"></i> 集合操作</h4>
                        <ul>
                            <li>使用LINQ进行复杂数据查询和筛选</li>
                            <li>实现集合的排序、分组和聚合操作</li>
                            <li>使用迭代器遍历集合元素</li>
                            <li>实现自定义比较器进行对象排序</li>
                        </ul>
                    </div>
                </div>
                
                <h3>泛型集合优势</h3>
                <div class="features">
                    <div class="feature">
                        <h4><i class="fas fa-shield-alt"></i> 类型安全</h4>
                        <p>编译时检查集合元素类型，避免运行时类型错误</p>
                    </div>
                    <div class="feature">
                        <h4><i class="fas fa-code"></i> 代码重用</h4>
                        <p>一套逻辑处理多种文献类型，减少重复代码</p>
                    </div>
                    <div class="feature">
                        <h4><i class="fas fa-tachometer-alt"></i> 性能优化</h4>
                        <p>避免装箱拆箱操作，提高系统性能</p>
                    </div>
                    <div class="feature">
                        <h4><i class="fas fa-expand-arrows-alt"></i> 可扩展性</h4>
                        <p>轻松支持新的文献类型，系统易于扩展</p>
                    </div>
                </div>
            </div>
            
            <div class="card">
                <h2><i class="fas fa-lightbulb"></i> 实践要点总结</h2>
                <div class="design-points">
                    <div class="design-card">
                        <h4><i class="fas fa-cube"></i> 类与对象设计</h4>
                        <ul>
                            <li>合理划分职责，保持类的单一职责原则</li>
                            <li>使用属性封装数据，通过方法暴露行为</li>
                            <li>为类设计有意义的构造函数</li>
                            <li>使用静态类实现工具方法</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-project-diagram"></i> 继承与多态</h4>
                        <ul>
                            <li>使用抽象类和接口定义契约</li>
                            <li>合理使用虚方法和重写实现多态</li>
                            <li>避免过度继承，优先使用组合</li>
                            <li>使用密封类防止不必要的继承</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-layer-group"></i> 集合框架</h4>
                        <ul>
                            <li>根据场景选择合适的集合类型</li>
                            <li>利用LINQ简化集合操作</li>
                            <li>实现集合的线程安全访问</li>
                            <li>使用泛型约束增强类型安全</li>
                        </ul>
                    </div>
                    
                    <div class="design-card">
                        <h4><i class="fas fa-exclamation-triangle"></i> 其他注意事项</h4>
                        <ul>
                            <li>实现完善的异常处理机制</li>
                            <li>对借阅限制、库存不足等情况进行处理</li>
                            <li>实现集合数据的保存与加载功能</li>
                            <li>编写单元测试验证核心功能</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
        
        <footer>
            <p>图书馆管理系统需求分析 | 基于C#面向对象编程实践 | 2023</p>
            <p><i class="fas fa-code"></i> 使用HTML5和CSS3构建 | <i class="fas fa-paint-brush"></i> 响应式设计</p>
        </footer>
    </div>
</body>
</html>